document.addEventListener('DOMContentLoaded', function() {
    console.log("预览页面已加载");
    // 获取DOM元素
    const regenerateBtn = document.getElementById('regenerateBtn');
    const actionsContainer = document.querySelector('.actions');
    
    // 检查是否是二维码扫描访问
    function isFromQRCodeScan() {
        const urlParams = new URLSearchParams(window.location.search);
        return urlParams.has('from') && urlParams.get('from') === 'qrcode' || 
               urlParams.has('source') && urlParams.get('source') === 'scan';
    }
    
    // 如果是二维码扫描访问，隐藏底部按钮
    if (isFromQRCodeScan()) {
        console.log("检测到通过二维码扫描访问，隐藏底部按钮");
        if (actionsContainer) {
            actionsContainer.style.display = 'none';
        }
    }
    
    // 默认盖章图片
    const DEFAULT_STAMP_IMAGE = "./img/zhang.png";
    
    // 从URL获取健康证ID
    function getHealthCardIdFromUrl() {
        const urlParams = new URLSearchParams(window.location.search);
        return urlParams.get('id');
    }
    
    // 日期格式化函数
    function formatDate(dateString) {
        if (!dateString) return '';
        const date = new Date(dateString);
        return `${date.getFullYear()}年${(date.getMonth() + 1).toString().padStart(2, '0')}月${date.getDate().toString().padStart(2, '0')}日`;
    }
    
    // 检查QRCode库是否正确加载
    function checkQRCodeLibrary() {
        if (typeof QRCode === 'undefined') {
            console.error("QRCode库未加载");
            return false;
        }
        console.log("QRCode库已正确加载");
        return true;
    }
    
    // 生成二维码
    function generateQRCode(uniqueId) {
        console.log("开始生成二维码，ID:", uniqueId);
        const qrcodeContainer = document.getElementById('preview-qrcode-container');
        if (!qrcodeContainer) {
            console.error("找不到二维码容器元素");
            return;
        }
        
        // 清空容器
        qrcodeContainer.innerHTML = '';
        
        try {
            // 使用健康证ID作为二维码内容 - 为后端部署做准备
            // 实际部署时可改为服务器URL + ID
            let content = "";
            
            // 在实际部署时，使用以下格式:
            // content = "https://yourserver.com/health-card?id=" + uniqueId;
            
            // 开发环境使用本地URL:
            const baseUrl = window.location.origin + window.location.pathname.replace(/\/[^\/]*$/, '/');
            content = baseUrl + "preview.html?id=" + uniqueId + "&from=qrcode";
            
            console.log("二维码内容:", content);
            
            // 生成二维码
            new QRCode(qrcodeContainer, {
                text: content,
                width: 80,
                height: 80,
                colorDark: "#00A000", // 绿色
                colorLight: "#ffffff",
                correctLevel: QRCode.CorrectLevel.M // 中等纠错级别
            });
            
            console.log("二维码生成成功");
        } catch (error) {
            console.error("生成二维码出错，尝试更简单版本:", error);
            
            // 尝试最简单的版本
            try {
                const simpleId = uniqueId || "健康证";
                const simplifiedUrl = baseUrl + "preview.html?id=" + uniqueId + "&from=qrcode";
                new QRCode(qrcodeContainer, {
                    text: simplifiedUrl,
                    width: 80,
                    height: 80,
                    colorDark: "#00A000", // 绿色
                    colorLight: "#ffffff",
                    correctLevel: QRCode.CorrectLevel.L // 低纠错级别
                });
                console.log("简单二维码生成成功");
            } catch (e) {
                console.error("简单二维码也生成失败:", e);
                qrcodeContainer.innerHTML = '<div style="font-size:12px;text-align:center;padding:5px;">二维码</div>';
            }
        }
    }
    
    // 加载健康证数据
    async function loadHealthCardData() {
        console.log("开始加载健康证数据");
        
        // 先从URL获取ID
        const healthCardId = getHealthCardIdFromUrl();
        console.log("URL中获取到的健康证ID:", healthCardId);
        
        // 如果有ID，优先从数据库获取
        if (healthCardId && window.healthCardApi) {
            try {
                console.log("尝试从数据库获取健康证数据...");
                const cardData = await window.healthCardApi.getCard(healthCardId);
                
                if (cardData && !cardData.error) {
                    console.log("从数据库成功获取健康证数据");
                    updatePreviewWithData(cardData);
                    return; // 成功获取数据，提前返回
                } else {
                    console.error("从数据库获取健康证失败:", cardData?.error);
                }
            } catch (error) {
                console.error("从数据库获取数据出错:", error);
            }
            
            // 数据库获取失败，尝试从localStorage获取（作为备用方案）
            console.log("尝试从localStorage获取特定健康证数据");
            const specificCardData = localStorage.getItem('healthCard_' + healthCardId);
            if (specificCardData) {
                try {
                    const data = JSON.parse(specificCardData);
                    updatePreviewWithData(data);
                    return; // 加载成功，提前返回
                } catch (e) {
                    console.error("解析特定健康证数据失败:", e);
                    // 继续尝试从常规存储加载
                }
            }
        } else if (healthCardId) {
            // 没有API但有ID，直接尝试从localStorage获取
            const specificCardData = localStorage.getItem('healthCard_' + healthCardId);
            if (specificCardData) {
                try {
                    const data = JSON.parse(specificCardData);
                    updatePreviewWithData(data);
                    return; // 加载成功，提前返回
                } catch (e) {
                    console.error("解析特定健康证数据失败:", e);
                    // 继续尝试从常规存储加载
                }
            }
        }
        
        // 从常规存储加载（兜底方案）
        const savedData = localStorage.getItem('healthCardData');
        if (savedData) {
            try {
                const minimalData = JSON.parse(savedData);
                
                // 检查是否为精简版数据（缺少照片等详细信息）
                if (minimalData.uniqueId && (!minimalData.photoData || minimalData.photoData === '(图片已保存到数据库)')) {
                    console.log("检测到精简版数据，尝试从数据库加载完整信息");
                    
                    // 尝试从数据库获取完整数据
                    if (window.healthCardApi) {
                        try {
                            const fullData = await window.healthCardApi.getCard(minimalData.uniqueId);
                            if (fullData && !fullData.error) {
                                console.log("成功从数据库获取完整健康证数据");
                                updatePreviewWithData(fullData);
                                return;
                            }
                        } catch (e) {
                            console.error("从数据库获取完整数据失败:", e);
                        }
                    }
                }
                
                // 如果无法从数据库获取完整数据，则使用本地数据
                console.log("使用localStorage中的数据");
                updatePreviewWithData(minimalData);
            } catch (e) {
                console.error('加载健康证数据失败:', e);
                // 替换alert为页面内提示
                showMessage('加载健康证数据失败，请返回编辑页面重新保存信息。', false);
            }
        } else {
            console.error("未找到保存的健康证数据");
            // 替换alert为页面内提示
            showMessage('未找到健康证数据，请返回编辑页面保存信息。', false);
            
            // 在显示提示后延迟跳转
            setTimeout(() => {
                window.location.href = 'index.html';
            }, 3000);
        }
    }
    
    // 使用健康证数据更新预览
    function updatePreviewWithData(data) {
        console.log("已加载健康证数据:", Object.keys(data).join(", "));
        
        // 更新预览区域
        document.getElementById('preview-name').textContent = data.name || '';
        document.getElementById('preview-gender').textContent = data.gender || '';
        document.getElementById('preview-id').textContent = data.id || '';
        document.getElementById('preview-age').textContent = data.age || '';
        document.getElementById('preview-type').textContent = data.type || '';
        document.getElementById('preview-jobType').textContent = data.jobType || '';
        document.getElementById('preview-issueDate').textContent = formatDate(data.issueDate);
        document.getElementById('preview-validDate').textContent = formatDate(data.validDate);
        document.getElementById('preview-result').textContent = data.result || '';
        document.getElementById('preview-unit').textContent = data.unit || '';
        document.getElementById('preview-hospital').textContent = data.hospital || '';
        
        // 显示照片（如果有）
        const photoContainer = document.getElementById('preview-photo-container');
        if (data.photoData && data.photoData !== '(图片已保存到数据库)') {
            photoContainer.innerHTML = `<img src="${data.photoData}" alt="照片">`;
            console.log("照片已加载");
        } else if (data.photoUrl) {
            // 如果有photoUrl字段（从数据库获取的情况）
            photoContainer.innerHTML = `<img src="${data.photoUrl}" alt="照片">`;
            console.log("使用URL加载照片");
        } else {
            console.log("未找到照片数据");
            photoContainer.innerHTML = '<div class="no-photo">无照片</div>';
        }

        // 显示章图片（如果有）
        const stampContainer = document.getElementById('preview-stamp-container');
        if (data.stampData && data.stampData.startsWith('data:')) {
            // 如果是Base64编码的图片数据
            stampContainer.innerHTML = `<img src="${data.stampData}" alt="盖章" onerror="this.onerror=null;this.src='${DEFAULT_STAMP_IMAGE}';">`;
            console.log("使用上传的章图片");
        } else if (data.stampUrl) {
            // 如果有stampUrl字段（从数据库获取的情况）
            stampContainer.innerHTML = `<img src="${data.stampUrl}" alt="盖章" onerror="this.onerror=null;this.src='${DEFAULT_STAMP_IMAGE}';">`;
            console.log("使用URL加载章图片");
        } else if (data.stampData && data.stampData !== '(图片已保存到数据库)') {
            // 如果是文件路径，确保路径正确
            console.log("使用指定路径章图片:", data.stampData);
            stampContainer.innerHTML = `<img src="${data.stampData}" alt="盖章" onerror="this.onerror=null;this.src='${DEFAULT_STAMP_IMAGE}';">`;
        } else {
            // 使用默认盖章图片
            console.log("使用默认章图片:", DEFAULT_STAMP_IMAGE);
            stampContainer.innerHTML = `<img src="${DEFAULT_STAMP_IMAGE}" alt="盖章" onerror="console.error('默认章图片加载失败');">`;
        }
        
        // 添加图片加载事件监听
        const stampImg = stampContainer.querySelector('img');
        if (stampImg) {
            stampImg.onload = function() {
                console.log("章图片加载成功");
            };
            stampImg.onerror = function() {
                console.error("章图片加载失败，尝试使用绝对路径");
                // 尝试使用绝对路径
                this.src = window.location.origin + window.location.pathname.replace(/\/[^\/]*$/, '/') + DEFAULT_STAMP_IMAGE;
            };
        }
        
        // 生成二维码，使用健康证唯一ID
        setTimeout(() => {
            generateQRCode(data.uniqueId);
        }, 300);
    }
    
    // 尝试多次生成二维码，提高成功率
    async function attemptQRCodeGeneration() {
        console.log("页面完全加载，尝试生成二维码");
        const healthCardId = getHealthCardIdFromUrl();
        
        if (healthCardId && window.healthCardApi) {
            try {
                // 从数据库获取数据
                const cardData = await window.healthCardApi.getCard(healthCardId);
                if (cardData && !cardData.error) {
                    console.log("使用数据库数据生成二维码");
                    generateQRCode(cardData.uniqueId);
                } else {
                    console.log("使用URL参数ID生成二维码");
                    generateQRCode(healthCardId);
                }
            } catch (error) {
                console.error("获取数据库数据失败，使用URL参数:", error);
                generateQRCode(healthCardId);
            }
            return;
        } else if (healthCardId) {
            generateQRCode(healthCardId);
            return;
        }
        
        const savedData = localStorage.getItem('healthCardData');
        if (savedData) {
            try {
                const data = JSON.parse(savedData);
                generateQRCode(data.uniqueId);
            } catch (e) {
                console.error("重试生成二维码失败:", e);
            }
        }
    }
    
    // 重新生成健康证功能
    function regenerateHealthCard() {
        console.log("重新填写生成健康证");
        
        // 清除现有健康证数据
        localStorage.removeItem('healthCardData');
        
        // 跳转到健康证修改页面，添加时间戳确保刷新
        const timestamp = new Date().getTime();
        window.location.href = 'index.html?t=' + timestamp;
    }
    
    // 绑定重新生成按钮事件
    if (regenerateBtn) {
        regenerateBtn.addEventListener('click', regenerateHealthCard);
    }
    
    // 加载页面时显示健康证数据
    loadHealthCardData();
    
    // 页面完全加载后再次尝试生成二维码
    window.addEventListener('load', function() {
        // 延迟执行，确保DOM已完全渲染
        setTimeout(async function() {
            await attemptQRCodeGeneration();
        }, 500);
        
        // 移除所有可能的边框
        setTimeout(function() {
            console.log("尝试移除所有边框");
            
            // 查找所有二维码和照片容器内的元素并移除边框
            const containers = document.querySelectorAll('.photo-container, .qrcode-container, .stamp-container');
            containers.forEach(container => {
                container.style.border = 'none';
                container.style.backgroundColor = 'transparent';
                
                // 处理内部所有元素
                const children = container.querySelectorAll('*');
                children.forEach(child => {
                    child.style.border = 'none';
                });
            });
            
            // 特别处理img, canvas和svg元素
            const mediaElements = document.querySelectorAll('img, canvas, svg, table');
            mediaElements.forEach(el => {
                el.style.border = 'none';
                if (el.tagName.toLowerCase() === 'table') {
                    el.style.borderCollapse = 'collapse';
                    const cells = el.querySelectorAll('td');
                    cells.forEach(cell => cell.style.border = 'none');
                }
            });
        }, 800);
    });
    
    console.log("预览页面初始化完成");
});

// 显示消息提示
function showMessage(message, isSuccess) {
    // 检查是否存在消息容器，如果不存在则创建一个
    let messageContainer = document.getElementById('messageContainer');
    if (!messageContainer) {
        messageContainer = document.createElement('div');
        messageContainer.id = 'messageContainer';
        document.body.appendChild(messageContainer);
    }
    
    // 创建消息元素
    const messageElement = document.createElement('div');
    messageElement.className = isSuccess ? 'message-success' : 'message-error';
    messageElement.classList.add('page-message');
    messageElement.textContent = message;
    
    // 添加到容器中
    messageContainer.appendChild(messageElement);
    
    // 设置淡入效果
    setTimeout(() => {
        messageElement.style.opacity = '1';
    }, 10);
    
    // 设置自动消失
    setTimeout(() => {
        messageElement.style.opacity = '0';
        setTimeout(() => {
            if (messageElement.parentNode === messageContainer) {
                messageContainer.removeChild(messageElement);
            }
        }, 300);
    }, 3000);
} 